; -*-Scheme-*-

;************************************************************************/
;*                                                                      */
;* Copyright (c) 2003-2009 Vladimir Tsichevski <tsichevski@gmail.com>   */
;*                                                                      */
;* This file is part of bigloo-lib (http://bigloo-lib.sourceforge.net)  */
;*                                                                      */
;* This library is free software; you can redistribute it and/or        */
;* modify it under the terms of the GNU Lesser General Public           */
;* License as published by the Free Software Foundation; either         */
;* version 2 of the License, or (at your option) any later version.     */
;*                                                                      */
;* This library is distributed in the hope that it will be useful,      */
;* but WITHOUT ANY WARRANTY; without even the implied warranty of       */
;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    */
;* Lesser General Public License for more details.                      */
;*                                                                      */
;* You should have received a copy of the GNU Lesser General Public     */
;* License along with this library; if not, write to the Free Software  */
;* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 */
;* USA                                                                  */
;*                                                                      */
;************************************************************************/
(module
 xmlregexp
 (extern
  (include "libxml/xmlregexp.h")
  )
 )

(define-object xmlRegexp ())

; Summary: regular expressions handling
; Description: basic API for libxml regular expressions handling used
;  for XML Schemas and validation.

; xmlRegexp:

; A libxml regular expression, they can actually be far more complex
; thank the POSIX regex expressions.

; xmlRegExecCtxt:

; A libxml progressive regular expression evaluation context

; typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
; typedef xmlRegExecCtxt *xmlRegExecCtxt;

; The POSIX like API

(define-func xmlRegexpCompile xmlRegexp ((string regexp)))
(define-func xmlRegFreeRegexp void ((xmlRegexp regexp)))
(define-func xmlRegexpExec int ((xmlRegexp comp)(string value)))
 
;;(define-func xmlRegexpPrint void (file output)(xmlRegexp regexp))
 
(define-func xmlRegexpIsDeterminist int ((xmlRegexp comp)))

; Callback function when doing a transition in the automata
; typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxt exec,
;  string token,
;  void *transdata,
;  void *inputdata);

; ; The progressive API

; xmlRegExecCtxt 
;  xmlRegNewExecCtxt (xmlRegexp comp,
;  xmlRegExecCallbacks callback,
;  void *data);
; void 
;  xmlRegFreeExecCtxt (xmlRegExecCtxt exec);
; int 
;  xmlRegExecPushString(xmlRegExecCtxt exec,
;  string value,
;  void *data);
; int 
;  xmlRegExecPushString2(xmlRegExecCtxt exec,
;  string value,
;  string value2,
;  void *data);
